package com.prototype.demo.prototyepManger;

import java.util.HashMap;

/**
 * Created by Administrator on 2017/6/9.
 * 原型管理器(Prototype Manager)是将多个原型对象存储在一个集合中供客户端使用，它是一个
 * 专门负责克隆对象的工厂，其中定义了一个集合用于存储原型对象，如果需要某个原型对象
 * 的一个克隆，可以通过复制集合中对应的原型对象来获得。在原型管理器中针对抽象原型类
 * 进行编程，以便扩展
 */
//原型管理器  饿汉单例模式实现
public class PrototypeManager {
    //定义一个HashMap用于村春prototype
    private HashMap hm = new HashMap();
    private static PrototypeManager pm = new PrototypeManager();

    //未HashMap添加公文对象
    private PrototypeManager(){
        hm.put("far",new FAR());
        hm.put("srs",new SRS());
    }

    //增加新的公文对象
    public void addOfficalDocument(String key,OfficalDocument officalDocument){
        hm.put(key,officalDocument);
    }

    //通过浅克隆获取新的公文对象
    public OfficalDocument getOfficalDocument(String key){
        return ((OfficalDocument)hm.get(key)).clone();
    }

    public static PrototypeManager getPrototypeManager(){
        return pm;
    }
}
